﻿//using System;
//using System.Globalization;
//using System.Threading;
//using System.Collections.Generic;
//using System.Linq;
//using Microsoft.Xna.Framework;
//using Microsoft.Xna.Framework.Audio;
//using Microsoft.Xna.Framework.Content;
//using Microsoft.Xna.Framework.GamerServices;
//using Microsoft.Xna.Framework.Graphics;
//using Microsoft.Xna.Framework.Input;
//using Microsoft.Xna.Framework.Media;
//using System.Xml;
//using System.Reflection;
//using ebookreader.Resources;
//using ebookreader;
//using System.IO;
//using System.IO.IsolatedStorage;

//namespace ebookreader
//{
//    //enum DragType
//    //{
//    //    None,
//    //    Fonts,
//    //    TColors,
//    //    BGColors,
//    //    Scales
//    //}
//    //class OptionsButton
//    //{
//    //    String text;
//    //    public SpriteFont font;
//    //    Vector2 position;
//    //    public Color textColor;
//    //    public Color textureColor;
//    //    Texture2D texture;
//    //    public Rectangle rectangle;
//    //    public bool enabled;
//    //    public float textScale;
//    //    bool textCentred;
//    //    public int index;
//    //    public OptionsButton(Rectangle rectangle, String text, Color textColor, SpriteFont font, bool textCentred, Texture2D texture, Color textureColor)
//    //    {

//    //        this.textColor = textColor;
//    //        this.font = font;
//    //        this.text = text;
//    //        this.rectangle = rectangle;
//    //        this.texture = texture;
//    //        this.textureColor = textureColor;
//    //        this.enabled = true;
//    //        textScale = 1;
//    //        this.textCentred = textCentred;
//    //    }
//    //    public OptionsButton(Rectangle rectangle, String text, Color textColor, SpriteFont font)
//    //        : this(rectangle, text, textColor, font, true, null, Color.Transparent)
//    //    { }
//    //    public OptionsButton(Rectangle rectangle, String text, Color textColor, SpriteFont font, bool textCentred)
//    //        : this(rectangle, text, textColor, font, textCentred, null, Color.Transparent)
//    //    {
//    //        if (!textCentred)
//    //        {
//    //            position = OptionsMenu.centerString(rectangle, text, font, textScale);
//    //            position.X = rectangle.X + 5;
//    //        }
//    //    }
//    //    public OptionsButton(Rectangle rectangle, Texture2D texture, Color textureColor)
//    //        : this(rectangle, "", Color.Transparent, null, true, texture, textureColor)
//    //    { }
//    //    public void Draw(SpriteBatch batch)
//    //    {
//    //        if (!enabled) 
//    //            return;
//    //            position = OptionsMenu.centerString(rectangle, text, font, textScale);
//    //        if (!textCentred)   
//    //            position.X = rectangle.X + 5;
                
//    //        if (texture != null)
//    //            batch.Draw(texture, rectangle, textureColor);
//    //        if (font != null)
//    //            batch.DrawString(font, text, position, textColor, 0, Vector2.Zero, textScale, SpriteEffects.None, 1);
//    //    }
//    //    public bool tapped_on(Point p)
//    //    {
//    //        return enabled && rectangle.Contains(p);
//    //    }
//    //}

//    //class SavedOptions
//    //{
//    //    public int font;
//    //    public int textColor;
//    //    public int bgColor;
//    //    public int scale;
//    //    public bool soundEnabled;
//    //    public SavedOptions()
//    //    {
//    //        font = 0;
//    //        textColor = 0;
//    //        bgColor = 0;
//    //        scale = 0;
//    //        soundEnabled = false;
//    //    }
//    //}

//    class OptionsMenuPortrait : Menu
//    {
//        //MyButton title;

//        SavedOptions savedOptions;

//        SpriteFont extralarge, large, medium, small;
//        InputManager input_manager;
//        //SpriteBatch spriteBatch;

//        OptionsButton back, title;
//        OptionsButton soundOn, soundOff;
//        OptionsButton soundText;
//        OptionsButton previewArea;
//        OptionsButton previewTitle;
//        List<SpriteFont> fonts;
//        List<Color> textColors;
//        List<Color> bgColors;
//        List<float> scales; 
//        OptionsButton font_title, tcolor_title, bgcolor_title, scale_title;
//        List<OptionsButton> fonts_b;
//        List<OptionsButton> tcolors_b;
//        List<OptionsButton> bgcolors_b;
//        List<OptionsButton> scales_b;
//        //DragType current_drag;


//        int initial_x = 0;
//        int titles_w = 200;
//        int font_y = 200;
//        int tcolor_y = 300;
//        int bgcolor_y = 400;
//        int scale_y = 500;
//        int buttons_w = 200;
//        int buttons_h = 70;
//        int buttons_x = 0 + 200 + 30;



//        public OptionsMenuPortrait(Game game)
//            : base(game)
//        {
//        }
//        public override void Initialize()
//        {
//            sprite_batch = Game.Services.GetService(typeof(SpriteBatch)) as SpriteBatch;
//            Game.Services.RemoveService(typeof(IInputManager));
//            input_manager = new InputManager(Game);
//            Game.Components.Add(input_manager);
//            input_manager.OnTap += on_tap;
//            input_manager.OnDrag += on_drag;
//            input_manager.OnHorizontalDrag += on_drag;
//            input_manager.OnVerticalDrag += on_drag;
//            input_manager.OnDragCompleted += on_drag_completed;
//            base.Initialize();
//        }
//        protected override void LoadContent()
//        {
//            var whiteTexture = Game.Content.Load<Texture2D>("Textures/Menu/whiteTexture");
//            extralarge = Game.Content.Load<SpriteFont>("Fonts/extralarge");
//            large = Game.Content.Load<SpriteFont>("Fonts/large");
//            medium = Game.Content.Load<SpriteFont>("Fonts/medium");
//            small = Game.Content.Load<SpriteFont>("Fonts/small");

//            back = new OptionsButton(new Rectangle(0, 700, 480, 100), Lang.MM_Back, Color.Red, large);
//            title = new OptionsButton(new Rectangle(0, 0, 480, 100), Lang.MM_OptionsMenu, Color.White, extralarge);

//            soundText = new OptionsButton(new Rectangle(0, 120, 350, 70), Lang.MM_SoundStatus, Color.White, medium);
//            soundOn = new OptionsButton(new Rectangle(soundText.rectangle.X + soundText.rectangle.Width, 120, 70, 70),
//                Game.Content.Load<Texture2D>("Textures/Menu/selectedSoundOn"), Color.White);
//            soundOff = new OptionsButton(soundOn.rectangle, Game.Content.Load<Texture2D>("Textures/Menu/selectedSoundOff"), Color.White);

//            savedOptions = OptionsMenu.GetSavedOptions();
//            //current_drag = DragType.None;
//            soundOn.enabled = savedOptions.soundEnabled;
//            soundOff.enabled = !soundOn.enabled;
//            fonts = new List<SpriteFont>();
//            scales = availableScales();
//            var f = OptionsMenu.availableFonts();
//            for(int i=0;i<f.Count;i++)
//                try
//                {
//                    fonts.Add(Game.Content.Load<SpriteFont>("Fonts/" + f[i]));
//                }
//                catch (ContentLoadException e) { e.ToString(); }

//            textColors = OptionsMenu.availableTextColors();
//            bgColors = OptionsMenu.availableBGColors();

//            if (savedOptions.font < 0 || savedOptions.font >= fonts.Count)
//                savedOptions.font = 0;
//            if (savedOptions.textColor < 0 || savedOptions.textColor >= textColors.Count)
//                savedOptions.textColor = 0;
//            if (savedOptions.bgColor < 0 || savedOptions.bgColor >= bgColors.Count)
//                savedOptions.bgColor = 0;
//            if (savedOptions.scale < 0 || savedOptions.scale >= scales.Count)
//                savedOptions.scale = 0;
//            previewTitle = new OptionsButton(new Rectangle(50, 600, 380, 40), Lang.MM_PreviewArea, Color.White, medium);
//            previewArea = new OptionsButton(new Rectangle(50, 640, 380, 60), Lang.MM_PreviewText, textColors[savedOptions.textColor],
//                fonts[savedOptions.font], true, Game.Content.Load<Texture2D>("Textures/Menu/whiteTexture"), bgColors[savedOptions.bgColor]);
//            previewArea.textScale = scales[savedOptions.scale];

            
//            font_title = new OptionsButton(new Rectangle(initial_x, font_y, titles_w, buttons_h), Lang.MM_Font, Color.White, medium, false, whiteTexture, Color.Black);
//            tcolor_title = new OptionsButton(new Rectangle(initial_x, tcolor_y, titles_w, buttons_h), Lang.MM_TextColor, Color.White, medium, false, whiteTexture, Color.Black);
//            bgcolor_title = new OptionsButton(new Rectangle(initial_x, bgcolor_y, titles_w, buttons_h), Lang.MM_BGColor, Color.White, medium, false, whiteTexture, Color.Black);
//            scale_title = new OptionsButton(new Rectangle(initial_x, scale_y, titles_w, buttons_h), Lang.MM_TextScale, Color.White, medium, false, whiteTexture, Color.Black);

//            font_drag_rect = new Rectangle(buttons_x, font_y, 480 - buttons_x, buttons_h);
//            tcolor_drag_rect = new Rectangle(buttons_x, tcolor_y, 480 - buttons_x, buttons_h);
//            bgcolor_drag_rect = new Rectangle(buttons_x, bgcolor_y, 480 - buttons_x, buttons_h);
//            scale_drag_rect = new Rectangle(buttons_x, scale_y, 480 - buttons_x, buttons_h);

//            font_container = new Rectangle(buttons_x - 5, font_y, buttons_x + 10, buttons_h);
//            tcolor_container = new Rectangle(buttons_x - 5, tcolor_y, buttons_x + 10, buttons_h);
//            bgcolor_container = new Rectangle(buttons_x - 5, bgcolor_y, buttons_x + 10, buttons_h);
//            scale_container = new Rectangle(buttons_x - 5, scale_y, buttons_x + 10, buttons_h);

//            fonts_b = new List<OptionsButton>();
//            bgcolors_b = new List<OptionsButton>();
//            tcolors_b = new List<OptionsButton>();
//            scales_b = new List<OptionsButton>();

//            for (int i = 0; i < savedOptions.font; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x - (savedOptions.font - i) * buttons_w, font_y, buttons_w, buttons_h), f[i], Color.Gold, medium);
//                //b.index = savedOptions.font - i;
//                b.index = i;
//                fonts_b.Add(b);
//            }
//            for (int i = savedOptions.font; i < fonts.Count; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x + (i - savedOptions.font) * buttons_w, font_y, buttons_w, buttons_h), f[i], Color.Gold, medium);
//                b.index = i;
//                fonts_b.Add(b);
//            }

//            for (int i = 0; i < savedOptions.textColor; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x - (savedOptions.textColor - i) * buttons_w, tcolor_y, buttons_w, buttons_h), whiteTexture, textColors[i]);
//                //b.index = savedOptions.textColor - i;
//                b.index = i;
//                tcolors_b.Add(b);
//            }
//            for (int i = savedOptions.textColor; i < textColors .Count; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x + (i - savedOptions.textColor) * buttons_w, tcolor_y, buttons_w, buttons_h), whiteTexture, textColors[i]);
//                b.index = i;
//                tcolors_b.Add(b);
//            }

//            for (int i = 0; i < savedOptions.bgColor; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x - (savedOptions.bgColor - i) * buttons_w, bgcolor_y, buttons_w, buttons_h), whiteTexture, bgColors[i]);
//                //b.index = savedOptions.bgColor - i;
//                b.index = i;
//                bgcolors_b.Add(b);
//            }
//            for (int i = savedOptions.bgColor; i < bgColors.Count; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x + (i - savedOptions.bgColor) * buttons_w, bgcolor_y, buttons_w, buttons_h), whiteTexture, bgColors[i]);
//                b.index = i;
//                bgcolors_b.Add(b);
//            }

//            for (int i = 0; i < savedOptions.scale; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x - (savedOptions.scale - i) * buttons_w, scale_y, buttons_w, buttons_h), "" + scales[i], Color.Gold, medium);
//                //b.index = savedOptions.scale - i;
//                b.index = i;
//                scales_b.Add(b);
//            }
//            for (int i = savedOptions.scale; i < scales.Count; i++)
//            {
//                var b = new OptionsButton(new Rectangle(buttons_x + (i - savedOptions.scale) * buttons_w, scale_y, buttons_w, buttons_h), "" + scales[i], Color.Gold, medium);
//                b.index = i;
//                scales_b.Add(b);
//            }
//            vel_font = vel_bgcolor = vel_scale = vel_tcolor = 0;
//            base.LoadContent();
//        }
//        float vel_font, vel_tcolor, vel_bgcolor, vel_scale;
//        public override void Update(GameTime gameTime)
//        {
//            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
//            {
//                OptionsMenu.SaveSavedOptions(savedOptions);
//                ScreenManager.SelectMainMenu(Game);
//                return;
//            }
//            soundOn.enabled = savedOptions.soundEnabled;
//            soundOff.enabled = !soundOn.enabled;


//            var dt = (float)gameTime.ElapsedGameTime.TotalSeconds;

//            vel_font = updateList(dt, vel_font, fonts_b);
//            vel_tcolor = updateList(dt, vel_tcolor, tcolors_b);
//            vel_bgcolor = updateList(dt, vel_bgcolor, bgcolors_b);
//            vel_scale = updateList(dt, vel_scale, scales_b);

//            if(vel_font!=0)
//                for(int i=0;i<fonts_b.Count;i++)
//                    if (font_container.Contains(fonts_b[i].rectangle))
//                    {
//                        savedOptions.font = fonts_b[i].index;
//                        updatePreview();
//                    }

//            if (vel_tcolor != 0)
//                for (int i = 0; i < tcolors_b.Count; i++)
//                    if (tcolor_container.Contains(tcolors_b[i].rectangle))
//                    {
//                        savedOptions.textColor = tcolors_b[i].index;
//                        updatePreview();
//                    }

//            if (vel_bgcolor != 0)
//                for (int i = 0; i < bgcolors_b.Count; i++)
//                    if (bgcolor_container.Contains(bgcolors_b[i].rectangle))
//                    {
//                        savedOptions.bgColor = bgcolors_b[i].index;
//                        updatePreview();
//                    }

//            if (vel_scale != 0)
//                for (int i = 0; i < scales_b.Count; i++)
//                    if (scale_container.Contains(scales_b[i].rectangle))
//                    {
//                        savedOptions.scale = scales_b[i].index;
//                        updatePreview();
//                    }

//            base.Update(gameTime);
//        }
//        Rectangle font_container, tcolor_container, bgcolor_container, scale_container; 
//        float updateList(float dt, float velocity, List<OptionsButton> list)
//        {
//            if (velocity != 0)
//            {
//                if (velocity < 0)
//                {
//                    velocity += dt;
//                    if (velocity > 0)
//                        velocity = 0;
//                }
//                else
//                {
//                    velocity -= dt;
//                    if (velocity < 0)
//                        velocity = 0;
//                }

//            }
//            if (velocity != 0)
//            {
//                var upper_x = buttons_x + list.Count * buttons_w;
//                var delta_x = (int)velocity/5;

                
//                //else if (list[list.Count - 1].rectangle.X + buttons_w + delta_x >= upper_x)
//                //{
//                //    delta_x = list[list.Count - 1].rectangle.X + buttons_w - upper_x;
//                //    velocity = 0;
//                //}
//                if (list[list.Count - 1].rectangle.X + delta_x < buttons_x)
//                {
//                    delta_x = list[list.Count - 1].rectangle.X - buttons_x;
//                    velocity = 0;
//                }
//                else
//                if (list[list.Count - 1].rectangle.X + delta_x + buttons_w> upper_x)
//                {
//                    delta_x = list[list.Count - 1].rectangle.X + buttons_w - upper_x;
//                    velocity = 0;
//                }
//                //else if (list[0].rectangle.X + delta_x < buttons_x)
//                //{
//                //    delta_x = buttons_x - list[0].rectangle.X;
//                //    velocity = 0;
//                //}
//                for (int i = 0; i < list.Count; i++)
//                {
//                    list[i].rectangle.X += delta_x;
//                }

//            }
//            return velocity;
//        }

//        private void updatePreview()
//        {
//            previewArea.textColor= textColors[savedOptions.textColor];
//            previewArea.font=fonts[savedOptions.font];
//            previewArea.textureColor = bgColors[savedOptions.bgColor];
//            previewArea.textScale = scales[savedOptions.scale];
//        }
//        public override void Draw(GameTime gameTime)
//        {
//            GraphicsDevice.Clear(Color.Black);
//            sprite_batch.Begin();

//            back.Draw(sprite_batch);
//            title.Draw(sprite_batch);

//            soundText.Draw(sprite_batch);
//            if(savedOptions.soundEnabled)
//                soundOn.Draw(sprite_batch);
//            else
//                soundOff.Draw(sprite_batch);
//            previewTitle.Draw(sprite_batch);
//            previewArea.Draw(sprite_batch);

//            for (int i = 0; i < fonts_b.Count; i++)
//                fonts_b[i].Draw(sprite_batch);
//            for (int i = 0; i < tcolors_b.Count; i++)
//                tcolors_b[i].Draw(sprite_batch);
//            for (int i = 0; i < bgcolors_b.Count; i++)
//                bgcolors_b[i].Draw(sprite_batch);
//            for (int i = 0; i < scales_b.Count; i++)
//                scales_b[i].Draw(sprite_batch);
//            font_title.Draw(sprite_batch);
//            tcolor_title.Draw(sprite_batch);
//            bgcolor_title.Draw(sprite_batch);
//            scale_title.Draw(sprite_batch);

//            sprite_batch.End();
//            base.Draw(gameTime);
//        }
//        Point tp = new Point();
//        void on_tap(Vector2 tap_position)
//        {

//            tp.X = (int)tap_position.X;
//            tp.Y = (int)tap_position.Y;

//            if (back.tapped_on(tp))
//            {
//                OptionsMenu.SaveSavedOptions(savedOptions);
//                ScreenManager.SelectMainMenu(Game);
//                return;
//            }
//            else if (soundOn.tapped_on(tp))// && savedOptions.soundEnabled)
//                savedOptions.soundEnabled = false;
//            else if (soundOff.tapped_on(tp))// && !savedOptions.soundEnabled)
//                savedOptions.soundEnabled = true;
//        }
//        Vector2 old_drag_pos = Vector2.Zero;
//        Rectangle font_drag_rect, tcolor_drag_rect, bgcolor_drag_rect, scale_drag_rect;
//        Point dp = new Point();
//        //int destination, direction;
//        int MAX_VEL = 20;
//        void on_drag(Vector2 drag_pos)
//        {
//            //if (current_drag != DragType.None) return;
//            if (old_drag_pos != Vector2.Zero)
//            {
//                //float dist = Vector2.Distance(old_drag_pos, drag_pos);
//                float dist_x = old_drag_pos.X - drag_pos.X;
//                float dist_y = old_drag_pos.Y - drag_pos.Y;
//                if (Math.Abs(dist_x) <= 5 || Math.Abs(dist_y) >= 10)
//                    return;
                
//                var center = Vector2.Lerp(old_drag_pos, drag_pos, 0.5f);
//                dp.X = (int)center.X;
//                dp.Y = (int)center.Y;
//                if (font_drag_rect.Contains(dp))
//                {
//                    vel_font -= dist_x;
//                    if (vel_font > 0)
//                        vel_font = Math.Min(vel_font, MAX_VEL);
//                    else
//                        vel_font = Math.Max(vel_font, -MAX_VEL);
//                    //current_drag = DragType.Fonts;
//                    //if (dist_x > 0 && savedOptions.font + 1 < fonts.Count)
//                    //{
//                    //    destination = savedOptions.font + 1;
//                    //    direction = 1;
//                    //}
//                    //else if (dist_x < 0 && savedOptions.font - 1 >= 0)
//                    //{
//                    //    destination = savedOptions.font - 1;
//                    //    direction = -1;
//                    //}
//                    //else
//                    //    current_drag = DragType.None;
//                }
//                else if (tcolor_drag_rect.Contains(dp))
//                {
//                    vel_tcolor -= dist_x;
//                    if (vel_tcolor > 0)
//                        vel_tcolor = Math.Min(vel_tcolor, MAX_VEL);
//                    else
//                        vel_tcolor = Math.Max(vel_tcolor, -MAX_VEL);
//                    //current_drag = DragType.TColors;
//                    //if (dist_x > 0 && savedOptions.textColor + 1 < textColors.Count)
//                    //    destination = savedOptions.textColor + 1;
//                    //else if (dist_x < 0 && savedOptions.textColor - 1 >= 0)
//                    //    destination = savedOptions.textColor - 1;
//                    //else
//                    //    current_drag = DragType.None;
//                }
//                else if (bgcolor_drag_rect.Contains(dp))
//                {
//                    vel_bgcolor -= dist_x;
//                    if (vel_bgcolor > 0)
//                        vel_bgcolor = Math.Min(vel_bgcolor, MAX_VEL);
//                    else
//                        vel_bgcolor = Math.Max(vel_bgcolor, -MAX_VEL);
//                    //current_drag = DragType.BGColors;
//                    //if (dist_x > 0 && savedOptions.bgColor + 1 < bgColors.Count)
//                    //    destination = savedOptions.bgColor + 1;
//                    //else if (dist_x < 0 && savedOptions.bgColor - 1 >= 0)
//                    //    destination = savedOptions.bgColor - 1;
//                    //else
//                    //    current_drag = DragType.None;
//                }
//                else if (scale_drag_rect.Contains(dp))
//                {
//                    vel_scale -= dist_x;
//                    if (vel_scale > 0)
//                        vel_scale = Math.Min(vel_scale, MAX_VEL);
//                    else
//                        vel_scale = Math.Max(vel_scale, -MAX_VEL);
//                    //current_drag = DragType.Scales;
//                    //if (dist_x > 0 && savedOptions.scale + 1 < scales.Count)
//                    //    destination = savedOptions.scale + 1;
//                    //else if (dist_x < 0 && savedOptions.scale - 1 >= 0)
//                    //    destination = savedOptions.scale - 1;
//                    //else
//                    //    current_drag = DragType.None;
//                }
                
//            }
//            old_drag_pos = drag_pos;
//        }

//        void on_drag_completed()
//        {
//            old_drag_pos = Vector2.Zero;
//            vel_bgcolor = vel_font = vel_scale = vel_tcolor = 0;
//        }

//        public static List<String> availableFonts()
//        {
//            return new List<string>()
//            {
//                "Arial",
//                "LucidaConsole",
//                "OCRAExtended",
//                "Orator"
//            };
//        }
//        public static List<Color> availableTextColors()
//        {
//            return new List<Color>()
//            {
//                Color.Blue,
//                Color.Black,
//                Color.Green,
//                Color.Gold,
//                Color.Red,
//                Color.DarkGreen,
//                Color.DarkBlue,
//                Color.White,
//                Color.LightCyan
//            };
//        }
//        public static List<Color> availableBGColors()
//        {
//            return new List<Color>()
//            {
//                Color.Black,
//                Color.White,
//                Color.LightGreen,
//                Color.LightCoral,
//                Color.LightGray,
//                Color.LightCyan,
//                Color.LightSalmon
//            };
//        }
//        public static List<float> availableScales()
//        {
//            return new List<float>(){
//                1,1.5f,2,2.5f,3
//            };
//        }
//        public static Vector2 centerString(Rectangle rectangle, string text, SpriteFont spriteFont)
//        {
//            Vector2 destinazione = new Vector2();
//            if (text == null || text == "") return new Vector2(rectangle.Center.X, rectangle.Center.Y);
//            Vector2 dimStringa = spriteFont.MeasureString(text);

//            destinazione.X = rectangle.X + rectangle.Width / 2 - dimStringa.X / 2;
//            destinazione.Y = rectangle.Y + rectangle.Height / 2 - dimStringa.Y / 2;

//            return destinazione;
//        }

//        public static Vector2 centerString(Rectangle rectangle, string text, SpriteFont spriteFont, float scale)
//        {
//            Vector2 destinazione = new Vector2();
//            if (text == null || text == "") return new Vector2(rectangle.Center.X, rectangle.Center.Y);
//            Vector2 dimStringa = spriteFont.MeasureString(text) * scale;

//            destinazione.X = rectangle.X + rectangle.Width / 2 - dimStringa.X / 2;
//            destinazione.Y = rectangle.Y + rectangle.Height / 2 - dimStringa.Y / 2;

//            return destinazione;
//        }

//        #region save and load settings
//        private static Func<StreamReader, SavedOptions> read_saved_options = reader =>
//        {
//            SavedOptions so = new SavedOptions();

//            var s = reader.ReadToEnd();
//            var r = s.Split(new[] { ';' });
//            so.font = int.Parse(r[0]);
//            so.textColor = int.Parse(r[1]);
//            so.bgColor = int.Parse(r[2]);
//            so.scale = int.Parse(r[3]);
//            so.soundEnabled = bool.Parse(r[4]);
//            return so;
//        };

//        private static Action<StreamWriter, SavedOptions> write_saved_options = (writer, entry) =>
//        {
//            var s = "" + entry.font + ";" + entry.textColor + ";" + entry.bgColor + ";" + entry.scale + ";" + entry.soundEnabled;
//            writer.Write(s);
//        };


//        public static void SaveSavedOptions(SavedOptions entry)
//        {
//            try
//            {
//                using (var appStorage = IsolatedStorageFile.GetUserStoreForApplication())
//                {
//                    appStorage.DeleteFile("options.txt");
//                    using (var streamFile = appStorage.OpenFile("options.txt", FileMode.OpenOrCreate))
//                    using (var writer = new StreamWriter(streamFile))
//                        write_saved_options(writer, entry);
//                }
//            }
//            catch (Exception e) { e.ToString(); }
//        }



//        public static SavedOptions ResetSavedOptions()
//        {
//            var so = new SavedOptions();
//            SaveSavedOptions(so);
//            return so;
//        }

//        public static SavedOptions GetSavedOptions()
//        {

//            using (var appStorage = IsolatedStorageFile.GetUserStoreForApplication())
//            {
//                using (var streamFile = appStorage.OpenFile("options.txt", FileMode.OpenOrCreate))
//                {
//                    try
//                    {
//                        using (var reader = new StreamReader(streamFile))
//                            return read_saved_options(reader);
//                    }
//                    catch (Exception) { return ResetSavedOptions(); }
//                }
//            }


//        }
//#endregion
//    }
//}
